package com.example.sevicedemo

import android.content.Context
import android.content.Intent
import androidx.core.app.JobIntentService

/**
 * @author ypk
 * 创建日期：2021/11/25  11:02
 * 描述：
 * Android 8.0(API 26)对后台service进行了限制，但是也引入了JobIntentService来取代之前的service
 * //JobIntentService和IntentService功能基本相同
 *
 * 详细说明：
 * 由于Android O的后台限制，创建后台服务需要使用JobScheduler来由系统进行调度任务的执行，
 * 而使用JobService的方式比较繁琐，
 * 8.0及以上提供了JobIntentService帮助开发者更方便的将任务交给JobScheduler调度，
 * 其本质是Service后台任务在他的OnhandleWork()中进行，子类重写该方法即可。使用较简单。
 *
 * https://blog.csdn.net/Houson_c/article/details/78461751
 */
class MyJobIntentService : JobIntentService() {


    companion object {
        /**
         * Service 唯一的id
         */
        val JOB_ID = 10111

        /**
         * 将工作加入此服务的便捷方法。
         */
        fun enqueueWork(context: Context?, work: Intent?) {
            enqueueWork(context!!, MyJobIntentService::class.java, JOB_ID, work!!)
        }
    }

    override fun onCreate() {
        super.onCreate()
        println("MyJobIntentService.onCreate")
    }

    override fun onHandleWork(intent: Intent) {
        //这里已经在子线程了，可以做耗时操作,
        println("MyJobIntentService.onHandleWork")

    }

    override fun onDestroy() {
        super.onDestroy()
    }



    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        println("MyJobIntentService.onStartCommand")
        //此方法不在回调了
        return super.onStartCommand(intent, flags, startId)
    }
}